package com.baidu.service;

import com.baidu.aip.speech.AipSpeech;
import com.baidu.aip.speech.TtsResponse;
import com.baidu.utils.AipSpeSample;

import java.util.HashMap;

// AipFaceService 人脸识别业务处理类
public class AipSynService {

    // 优化：免实例化对象, 单例模式
    private static AipSynService aipSynService;
    public static AipSynService getAipSynService(){
        if(aipSynService == null) aipSynService = new AipSynService();
        return aipSynService;
    }

    public AipSpeech aipSpeech = AipSpeSample.getAipSpe();

    //文字转语音
    public byte[] synthesis(String text, String per, String spd, String pit) {
        // 传入可选参数调用接口
        HashMap<String, Object> options = new HashMap<>();
        options.put("spd", spd);   //语速，取值0-9，默认为5中语速
        options.put("pit", pit);   //音调，取值0-9，默认为5中语调
        options.put("per", per);   //普通发音人选择：度小美=0(默认)，度小宇=1，，度逍遥（基础）=3，度丫丫=4
        //System.out.println("spd "+spd + "\npit" + pit + "\nper" + per);
        TtsResponse res = aipSpeech.synthesis(text,  "zh", 1, options);

        //JSONObject result = res.getResult();    //服务器返回的内容，合成成功时为null,失败时包含error_no等信息
        //byte[] data = res.getData();            //生成的音频数据
        //输出音频
        //if (data != null) {
        //    try {
        //        Util.writeBytesToFileSystem(data, "D:\\files\\output.mp3");
        //    } catch (IOException e) {
        //        e.printStackTrace();
        //    }
        //}

        //将合成的音频返回前端
        byte[] data = null;
        // 当getResult等于null，合成成功
        if (res.getResult() == null) data = res.getData();

        return data; // toString 转换string类型
    }


}
